package com.O1DesignModel;

/**
 * 工厂模式-->简单工厂模式  创建一个简单的工厂
 *
 *  创建不同的日志管理
 *     通过日志工厂创建不同的日志管理，如  consoleLogger和FileLogger
 *   1.创建一个日志的公共接口
 *   2.创建具体的日志管理类，实现此接口
 *   3.创建一个工厂，根据传入的参数创建具体的日志管理类
 *
 */

interface Logger{
    public void log();
}

class ConsoleLogger implements Logger{
    @Override
    public void log() {
        System.out.println("console logger");
    }
}

class FileLogger implements Logger{
    @Override
    public void log() {
        System.out.println("file logger");
    }
}

class LoggerFactory{
    public static Logger getLogger(String type){
        if(type.equals("console")){
            return new ConsoleLogger();
        }else if(type.equals("file")){
            return new FileLogger();
        }else{
            throw new RuntimeException("no such logger");
        }
    }
}

public class O1_Factory_Simple_01 {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger("file");
        logger.log();
        LoggerFactory.getLogger("console").log();
    }
}
